package com.pe.pgn.clubpgn.domain;

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.springframework.format.annotation.DateTimeFormat;

/**
 * @author Edwin Farfan
 */
@Entity
@Table(name= "clpm_transaccion_articulo")
public class ClpmTransaccionArticulo extends CamposAuditoria {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 9059216691276752209L;
	private Long id;
	private ClpdArticulo clpdArticulo;
	private String coCodigoArticulo;
	private String stIndicadorTipoMovimiento;
	private BigDecimal vaCantidad;
	private String coSerie;
	private ClpbAlmacen clpbAlmacen;
	private ClpmCatalogo clpmCatalogo;
	private ClprPremioCatalogo clprPremio;
	private String coCodigoPremio;
	private ClpbDocumentoMovArticulo ClpbDocumentoMovArticulo;
	
	
	@Id
    @Column(name="id")
    @SequenceGenerator(name="seqtransaccionarticulo", sequenceName="seq_transaccion_articulo")
    @GeneratedValue(generator="seqtransaccionarticulo")
	public Long getId() {
		return id;
	}

	@ManyToOne(targetEntity = ClpdArticulo.class)
    @JoinColumn(name="co_articulo")
	public ClpdArticulo getClpdArticulo() {
		return clpdArticulo;
	}

	@Column(name="co_codigo_articulo")
	public String getCoCodigoArticulo() {
		return coCodigoArticulo;
	}

	@Column(name = "va_cantidad")
	public BigDecimal getVaCantidad() {
		return vaCantidad;
	}

	@ManyToOne(targetEntity = ClpbAlmacen.class)
    @JoinColumn(name="co_almacen")
	public ClpbAlmacen getClpbAlmacen() {
		return clpbAlmacen;
	}

	@ManyToOne(targetEntity = ClpmCatalogo.class)
    @JoinColumn(name="co_catalogo")
	public ClpmCatalogo getClpmCatalogo() {
		return clpmCatalogo;
	}

	@ManyToOne(targetEntity = ClprPremioCatalogo.class)
    @JoinColumn(name="co_premio")
	public ClprPremioCatalogo getClprPremio() {
		return clprPremio;
	}

	@Column(name = "co_codigo_premio")
	public String getCoCodigoPremio() {
		return coCodigoPremio;
	}
	
	@Column(name = "st_indicador_tipo_movimiento")
	public String getStIndicadorTipoMovimiento() {
		return stIndicadorTipoMovimiento;
	}
	
	@ManyToOne(targetEntity = ClpbDocumentoMovArticulo.class)
	@JoinColumn(name = "co_documento_mov_articulo")
	public ClpbDocumentoMovArticulo getClpbDocumentoMovArticulo() {
		return ClpbDocumentoMovArticulo;
	}
	
	@Column(name = "co_serie")
	public String getCoSerie() {
		return coSerie;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 17;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (getClass() != obj.getClass())
			return false;
		ClpmTransaccionArticulo other = (ClpmTransaccionArticulo) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return null;
	}
	

	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public void setCoSerie(String coSerie) {
		this.coSerie = coSerie;
	}

	public void setClpdArticulo(ClpdArticulo clpdArticulo) {
		this.clpdArticulo = clpdArticulo;
	}

	public void setCoCodigoArticulo(String coCodigoArticulo) {
		this.coCodigoArticulo = coCodigoArticulo;
	}

	public void setVaCantidad(BigDecimal vaCantidad) {
		this.vaCantidad = vaCantidad;
	}

	public void setClpbAlmacen(ClpbAlmacen clpbAlmacen) {
		this.clpbAlmacen = clpbAlmacen;
	}

	public void setClpmCatalogo(ClpmCatalogo clpmCatalogo) {
		this.clpmCatalogo = clpmCatalogo;
	}

	public void setClprPremio(ClprPremioCatalogo clprPremio) {
		this.clprPremio = clprPremio;
	}

	public void setCoCodigoPremio(String coCodigoPremio) {
		this.coCodigoPremio = coCodigoPremio;
	}

	public void setStIndicadorTipoMovimiento(String stIndicadorTipoMovimiento) {
		this.stIndicadorTipoMovimiento = stIndicadorTipoMovimiento;
	}

	public void setClpbDocumentoMovArticulo(
			ClpbDocumentoMovArticulo clpbDocumentoMovArticulo) {
		ClpbDocumentoMovArticulo = clpbDocumentoMovArticulo;
	}

}
